<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Module Interface</title>
<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
<link rel="home" href="index.html" title="GDK-PixBuf Reference Manual">
<link rel="up" href="rn01.html" title="API Reference">
<link rel="prev" href="GdkPixbufLoader.html" title="GdkPixbufLoader">
<link rel="next" href="rn02.html" title="Tools Reference">
<meta name="generator" content="GTK-Doc V1.17.1 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2">
<tr valign="middle">
<td><a accesskey="p" href="GdkPixbufLoader.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
<td><a accesskey="u" href="rn01.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
<th width="100%" align="center">GDK-PixBuf Reference Manual</th>
<td><a accesskey="n" href="rn02.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
</tr>
<tr><td colspan="5" class="shortcuts">
<a href="#gdk-pixbuf-Module-Interface.synopsis" class="shortcut">Top</a>
                   | 
                  <a href="#gdk-pixbuf-Module-Interface.description" class="shortcut">Description</a>
</td></tr>
</table>
<div class="refentry">
<a name="gdk-pixbuf-Module-Interface"></a><div class="titlepage"></div>
<div class="refnamediv"><table width="100%"><tr>
<td valign="top">
<h2><span class="refentrytitle"><a name="gdk-pixbuf-Module-Interface.top_of_page"></a>Module Interface</span></h2>
<p>Module Interface — Extending &amp;gdk-pixbuf;</p>
</td>
<td valign="top" align="right"></td>
</tr></table></div>
<div class="refsynopsisdiv">
<a name="gdk-pixbuf-Module-Interface.synopsis"></a><h2>Synopsis</h2>
<pre class="synopsis">
#include &lt;gdk-pixbuf/gdk-pixbuf.h&gt;

<span class="returnvalue">gboolean</span>            <a class="link" href="gdk-pixbuf-Module-Interface.html#gdk-pixbuf-set-option" title="gdk_pixbuf_set_option ()">gdk_pixbuf_set_option</a>               (<em class="parameter"><code><a class="link" href="gdk-pixbuf-The-GdkPixbuf-Structure.html#GdkPixbuf"><span class="type">GdkPixbuf</span></a> *pixbuf</code></em>,
                                                         <em class="parameter"><code>const <span class="type">gchar</span> *key</code></em>,
                                                         <em class="parameter"><code>const <span class="type">gchar</span> *value</code></em>);
<span class="returnvalue">GSList</span> *            <a class="link" href="gdk-pixbuf-Module-Interface.html#gdk-pixbuf-get-formats" title="gdk_pixbuf_get_formats ()">gdk_pixbuf_get_formats</a>              (<em class="parameter"><code><span class="type">void</span></code></em>);
<a class="link" href="gdk-pixbuf-Module-Interface.html#GdkPixbufFormat" title="struct GdkPixbufFormat"><span class="returnvalue">GdkPixbufFormat</span></a> *   <a class="link" href="gdk-pixbuf-Module-Interface.html#gdk-pixbuf-format-copy" title="gdk_pixbuf_format_copy ()">gdk_pixbuf_format_copy</a>              (<em class="parameter"><code>const <a class="link" href="gdk-pixbuf-Module-Interface.html#GdkPixbufFormat" title="struct GdkPixbufFormat"><span class="type">GdkPixbufFormat</span></a> *format</code></em>);
<span class="returnvalue">void</span>                <a class="link" href="gdk-pixbuf-Module-Interface.html#gdk-pixbuf-format-free" title="gdk_pixbuf_format_free ()">gdk_pixbuf_format_free</a>              (<em class="parameter"><code><a class="link" href="gdk-pixbuf-Module-Interface.html#GdkPixbufFormat" title="struct GdkPixbufFormat"><span class="type">GdkPixbufFormat</span></a> *format</code></em>);
<span class="returnvalue">gchar</span> *             <a class="link" href="gdk-pixbuf-Module-Interface.html#gdk-pixbuf-format-get-name" title="gdk_pixbuf_format_get_name ()">gdk_pixbuf_format_get_name</a>          (<em class="parameter"><code><a class="link" href="gdk-pixbuf-Module-Interface.html#GdkPixbufFormat" title="struct GdkPixbufFormat"><span class="type">GdkPixbufFormat</span></a> *format</code></em>);
<span class="returnvalue">gchar</span> *             <a class="link" href="gdk-pixbuf-Module-Interface.html#gdk-pixbuf-format-get-description" title="gdk_pixbuf_format_get_description ()">gdk_pixbuf_format_get_description</a>   (<em class="parameter"><code><a class="link" href="gdk-pixbuf-Module-Interface.html#GdkPixbufFormat" title="struct GdkPixbufFormat"><span class="type">GdkPixbufFormat</span></a> *format</code></em>);
<span class="returnvalue">gchar</span> **            <a class="link" href="gdk-pixbuf-Module-Interface.html#gdk-pixbuf-format-get-mime-types" title="gdk_pixbuf_format_get_mime_types ()">gdk_pixbuf_format_get_mime_types</a>    (<em class="parameter"><code><a class="link" href="gdk-pixbuf-Module-Interface.html#GdkPixbufFormat" title="struct GdkPixbufFormat"><span class="type">GdkPixbufFormat</span></a> *format</code></em>);
<span class="returnvalue">gchar</span> **            <a class="link" href="gdk-pixbuf-Module-Interface.html#gdk-pixbuf-format-get-extensions" title="gdk_pixbuf_format_get_extensions ()">gdk_pixbuf_format_get_extensions</a>    (<em class="parameter"><code><a class="link" href="gdk-pixbuf-Module-Interface.html#GdkPixbufFormat" title="struct GdkPixbufFormat"><span class="type">GdkPixbufFormat</span></a> *format</code></em>);
<span class="returnvalue">gboolean</span>            <a class="link" href="gdk-pixbuf-Module-Interface.html#gdk-pixbuf-format-is-writable" title="gdk_pixbuf_format_is_writable ()">gdk_pixbuf_format_is_writable</a>       (<em class="parameter"><code><a class="link" href="gdk-pixbuf-Module-Interface.html#GdkPixbufFormat" title="struct GdkPixbufFormat"><span class="type">GdkPixbufFormat</span></a> *format</code></em>);
<span class="returnvalue">gboolean</span>            <a class="link" href="gdk-pixbuf-Module-Interface.html#gdk-pixbuf-format-is-scalable" title="gdk_pixbuf_format_is_scalable ()">gdk_pixbuf_format_is_scalable</a>       (<em class="parameter"><code><a class="link" href="gdk-pixbuf-Module-Interface.html#GdkPixbufFormat" title="struct GdkPixbufFormat"><span class="type">GdkPixbufFormat</span></a> *format</code></em>);
<span class="returnvalue">gboolean</span>            <a class="link" href="gdk-pixbuf-Module-Interface.html#gdk-pixbuf-format-is-disabled" title="gdk_pixbuf_format_is_disabled ()">gdk_pixbuf_format_is_disabled</a>       (<em class="parameter"><code><a class="link" href="gdk-pixbuf-Module-Interface.html#GdkPixbufFormat" title="struct GdkPixbufFormat"><span class="type">GdkPixbufFormat</span></a> *format</code></em>);
<span class="returnvalue">void</span>                <a class="link" href="gdk-pixbuf-Module-Interface.html#gdk-pixbuf-format-set-disabled" title="gdk_pixbuf_format_set_disabled ()">gdk_pixbuf_format_set_disabled</a>      (<em class="parameter"><code><a class="link" href="gdk-pixbuf-Module-Interface.html#GdkPixbufFormat" title="struct GdkPixbufFormat"><span class="type">GdkPixbufFormat</span></a> *format</code></em>,
                                                         <em class="parameter"><code><span class="type">gboolean</span> disabled</code></em>);
<span class="returnvalue">gchar</span> *             <a class="link" href="gdk-pixbuf-Module-Interface.html#gdk-pixbuf-format-get-license" title="gdk_pixbuf_format_get_license ()">gdk_pixbuf_format_get_license</a>       (<em class="parameter"><code><a class="link" href="gdk-pixbuf-Module-Interface.html#GdkPixbufFormat" title="struct GdkPixbufFormat"><span class="type">GdkPixbufFormat</span></a> *format</code></em>);
struct              <a class="link" href="gdk-pixbuf-Module-Interface.html#GdkPixbufFormat" title="struct GdkPixbufFormat">GdkPixbufFormat</a>;
enum                <a class="link" href="gdk-pixbuf-Module-Interface.html#GdkPixbufFormatFlags" title="enum GdkPixbufFormatFlags">GdkPixbufFormatFlags</a>;
struct              <a class="link" href="gdk-pixbuf-Module-Interface.html#GdkPixbufModulePattern" title="struct GdkPixbufModulePattern">GdkPixbufModulePattern</a>;
<span class="returnvalue">void</span>                (<a class="link" href="gdk-pixbuf-Module-Interface.html#GdkPixbufModuleFillVtableFunc" title="GdkPixbufModuleFillVtableFunc ()">*GdkPixbufModuleFillVtableFunc</a>)    (<em class="parameter"><code><a class="link" href="gdk-pixbuf-Module-Interface.html#GdkPixbufModule" title="struct GdkPixbufModule"><span class="type">GdkPixbufModule</span></a> *module</code></em>);
<span class="returnvalue">void</span>                (<a class="link" href="gdk-pixbuf-Module-Interface.html#GdkPixbufModuleFillInfoFunc" title="GdkPixbufModuleFillInfoFunc ()">*GdkPixbufModuleFillInfoFunc</a>)      (<em class="parameter"><code><a class="link" href="gdk-pixbuf-Module-Interface.html#GdkPixbufFormat" title="struct GdkPixbufFormat"><span class="type">GdkPixbufFormat</span></a> *info</code></em>);
<span class="returnvalue">void</span>                (<a class="link" href="gdk-pixbuf-Module-Interface.html#GdkPixbufModuleSizeFunc" title="GdkPixbufModuleSizeFunc ()">*GdkPixbufModuleSizeFunc</a>)          (<em class="parameter"><code><span class="type">gint</span> *width</code></em>,
                                                         <em class="parameter"><code><span class="type">gint</span> *height</code></em>,
                                                         <em class="parameter"><code><span class="type">gpointer</span> user_data</code></em>);
<span class="returnvalue">void</span>                (<a class="link" href="gdk-pixbuf-Module-Interface.html#GdkPixbufModulePreparedFunc" title="GdkPixbufModulePreparedFunc ()">*GdkPixbufModulePreparedFunc</a>)      (<em class="parameter"><code><a class="link" href="gdk-pixbuf-The-GdkPixbuf-Structure.html#GdkPixbuf"><span class="type">GdkPixbuf</span></a> *pixbuf</code></em>,
                                                         <em class="parameter"><code><a class="link" href="gdk-pixbuf-Animations.html#GdkPixbufAnimation"><span class="type">GdkPixbufAnimation</span></a> *anim</code></em>,
                                                         <em class="parameter"><code><span class="type">gpointer</span> user_data</code></em>);
<span class="returnvalue">void</span>                (<a class="link" href="gdk-pixbuf-Module-Interface.html#GdkPixbufModuleUpdatedFunc" title="GdkPixbufModuleUpdatedFunc ()">*GdkPixbufModuleUpdatedFunc</a>)       (<em class="parameter"><code><a class="link" href="gdk-pixbuf-The-GdkPixbuf-Structure.html#GdkPixbuf"><span class="type">GdkPixbuf</span></a> *pixbuf</code></em>,
                                                         <em class="parameter"><code><span class="type">int</span> x</code></em>,
                                                         <em class="parameter"><code><span class="type">int</span> y</code></em>,
                                                         <em class="parameter"><code><span class="type">int</span> width</code></em>,
                                                         <em class="parameter"><code><span class="type">int</span> height</code></em>,
                                                         <em class="parameter"><code><span class="type">gpointer</span> user_data</code></em>);
struct              <a class="link" href="gdk-pixbuf-Module-Interface.html#GdkPixbufModule" title="struct GdkPixbufModule">GdkPixbufModule</a>;

struct              <a class="link" href="gdk-pixbuf-Module-Interface.html#GdkPixbufAnimationClass" title="struct GdkPixbufAnimationClass">GdkPixbufAnimationClass</a>;
struct              <a class="link" href="gdk-pixbuf-Module-Interface.html#GdkPixbufAnimationIterClass" title="struct GdkPixbufAnimationIterClass">GdkPixbufAnimationIterClass</a>;
</pre>
</div>
<div class="refsect1">
<a name="gdk-pixbuf-Module-Interface.description"></a><h2>Description</h2>
<p>
If &amp;gdk-pixbuf; has been compiled with GModule support, it can be extended by
modules which can load (and perhaps also save) new image and animation
formats. Each loadable module must export a
<a class="link" href="gdk-pixbuf-Module-Interface.html#GdkPixbufModuleFillInfoFunc" title="GdkPixbufModuleFillInfoFunc ()"><span class="type">GdkPixbufModuleFillInfoFunc</span></a> function named <code class="function">fill_info</code> and
a <a class="link" href="gdk-pixbuf-Module-Interface.html#GdkPixbufModuleFillVtableFunc" title="GdkPixbufModuleFillVtableFunc ()"><span class="type">GdkPixbufModuleFillVtableFunc</span></a> function named
<code class="function">fill_vtable</code>.
</p>
<p>
In order to make format-checking work before actually loading the modules
(which may require dlopening image libraries), modules export their 
signatures (and other information) via the <code class="function">fill_info</code>
function. An external utility, <span class="command"><strong>gdk-pixbuf-query-loaders</strong></span>, 
uses this to create a text file containing a list of all available loaders and 
their signatures. This file is then read at runtime by &amp;gdk-pixbuf; to obtain
the list of available loaders and their signatures. 
</p>
<p>
Modules may only implement a subset of the functionality available via
<a class="link" href="gdk-pixbuf-Module-Interface.html#GdkPixbufModule" title="struct GdkPixbufModule"><span class="type">GdkPixbufModule</span></a>. If a particular functionality is not implemented, the
<code class="function">fill_vtable</code> function will simply not set the corresponding
function pointers of the <a class="link" href="gdk-pixbuf-Module-Interface.html#GdkPixbufModule" title="struct GdkPixbufModule"><span class="type">GdkPixbufModule</span></a> structure. If a module supports
incremental loading (i.e. provides <span class="type">begin_load</span>, <span class="type">stop_load</span> and
<span class="type">load_increment</span>), it doesn't have to implement <span class="type">load</span>, since &amp;gdk-pixbuf; can 
supply a generic <span class="type">load</span> implementation wrapping the incremental loading. 
</p>
<p>
Installing a module is a two-step process:
</p>
<div class="itemizedlist"><ul class="itemizedlist" type="disc">
<li class="listitem"><p>copy the module file(s) to the loader directory (normally
<code class="filename"><em class="replaceable"><code>libdir</code></em>/gtk-2.0/<em class="replaceable"><code>version</code></em>/loaders</code>,
unless overridden by the environment variable
<code class="envar">GDK_PIXBUF_MODULEDIR</code>) 
</p></li>
<li class="listitem"><p>call <span class="command"><strong>gdk-pixbuf-query-loaders</strong></span> to update the
module file (normally
<code class="filename"><em class="replaceable"><code>sysconfdir</code></em>/gtk-2.0/gdk-pixbuf.loaders</code>,
unless overridden by the environment variable
<code class="envar">GDK_PIXBUF_MODULE_FILE</code>)
</p></li>
</ul></div>
<p>
</p>
<p>
The &amp;gdk-pixbuf; interfaces needed for implementing modules are contained in 
<code class="filename">gdk-pixbuf-io.h</code> (and
<code class="filename">gdk-pixbuf-animation.h</code> if the module supports animations).
They are not covered by the same stability guarantees as the regular 
&amp;gdk-pixbuf; API. To underline this fact, they are protected by 
<code class="literal">#ifdef GDK_PIXBUF_ENABLE_BACKEND</code>.
</p>
</div>
<div class="refsect1">
<a name="gdk-pixbuf-Module-Interface.details"></a><h2>Details</h2>
<div class="refsect2">
<a name="gdk-pixbuf-set-option"></a><h3>gdk_pixbuf_set_option ()</h3>
<pre class="programlisting"><span class="returnvalue">gboolean</span>            gdk_pixbuf_set_option               (<em class="parameter"><code><a class="link" href="gdk-pixbuf-The-GdkPixbuf-Structure.html#GdkPixbuf"><span class="type">GdkPixbuf</span></a> *pixbuf</code></em>,
                                                         <em class="parameter"><code>const <span class="type">gchar</span> *key</code></em>,
                                                         <em class="parameter"><code>const <span class="type">gchar</span> *value</code></em>);</pre>
<p>
Attaches a key/value pair as an option to a <a class="link" href="gdk-pixbuf-The-GdkPixbuf-Structure.html#GdkPixbuf"><span class="type">GdkPixbuf</span></a>. If <code class="literal">key</code> already
exists in the list of options attached to <em class="parameter"><code>pixbuf</code></em>, the new value is 
ignored and <code class="literal">FALSE</code> is returned.
</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
<tr>
<td><p><span class="term"><em class="parameter"><code>pixbuf</code></em> :</span></p></td>
<td>a <a class="link" href="gdk-pixbuf-The-GdkPixbuf-Structure.html#GdkPixbuf"><span class="type">GdkPixbuf</span></a>
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>key</code></em> :</span></p></td>
<td>a nul-terminated string.</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>value</code></em> :</span></p></td>
<td>a nul-terminated string.</td>
</tr>
<tr>
<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
<td>
<code class="literal">TRUE</code> on success.</td>
</tr>
</tbody>
</table></div>
<p class="since">Since 2.2</p>
</div>
<hr>
<div class="refsect2">
<a name="gdk-pixbuf-get-formats"></a><h3>gdk_pixbuf_get_formats ()</h3>
<pre class="programlisting"><span class="returnvalue">GSList</span> *            gdk_pixbuf_get_formats              (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>
Obtains the available information about the image formats supported
by GdkPixbuf.
</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody><tr>
<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
<td>A list of
<a class="link" href="gdk-pixbuf-Module-Interface.html#GdkPixbufFormat" title="struct GdkPixbufFormat"><span class="type">GdkPixbufFormat</span></a>s describing the supported
image formats.  The list should be freed when it is no longer needed,
but the structures themselves are owned by <a class="link" href="gdk-pixbuf-The-GdkPixbuf-Structure.html#GdkPixbuf"><span class="type">GdkPixbuf</span></a> and should not be
freed. <span class="annotation">[<acronym title="Free data container after the code is done."><span class="acronym">transfer container</span></acronym>][<acronym title="Generics and defining elements of containers and arrays."><span class="acronym">element-type</span></acronym> GdkPixbufFormat]</span>
</td>
</tr></tbody>
</table></div>
<p class="since">Since 2.2</p>
</div>
<hr>
<div class="refsect2">
<a name="gdk-pixbuf-format-copy"></a><h3>gdk_pixbuf_format_copy ()</h3>
<pre class="programlisting"><a class="link" href="gdk-pixbuf-Module-Interface.html#GdkPixbufFormat" title="struct GdkPixbufFormat"><span class="returnvalue">GdkPixbufFormat</span></a> *   gdk_pixbuf_format_copy              (<em class="parameter"><code>const <a class="link" href="gdk-pixbuf-Module-Interface.html#GdkPixbufFormat" title="struct GdkPixbufFormat"><span class="type">GdkPixbufFormat</span></a> *format</code></em>);</pre>
<p>
Creates a copy of <em class="parameter"><code>format</code></em>
</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
<tr>
<td><p><span class="term"><em class="parameter"><code>format</code></em> :</span></p></td>
<td>a <a class="link" href="gdk-pixbuf-Module-Interface.html#GdkPixbufFormat" title="struct GdkPixbufFormat"><span class="type">GdkPixbufFormat</span></a>
</td>
</tr>
<tr>
<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
<td>the newly allocated copy of a <a class="link" href="gdk-pixbuf-Module-Interface.html#GdkPixbufFormat" title="struct GdkPixbufFormat"><span class="type">GdkPixbufFormat</span></a>. Use
<a class="link" href="gdk-pixbuf-Module-Interface.html#gdk-pixbuf-format-free" title="gdk_pixbuf_format_free ()"><code class="function">gdk_pixbuf_format_free()</code></a> to free the resources when done</td>
</tr>
</tbody>
</table></div>
<p class="since">Since 2.22</p>
</div>
<hr>
<div class="refsect2">
<a name="gdk-pixbuf-format-free"></a><h3>gdk_pixbuf_format_free ()</h3>
<pre class="programlisting"><span class="returnvalue">void</span>                gdk_pixbuf_format_free              (<em class="parameter"><code><a class="link" href="gdk-pixbuf-Module-Interface.html#GdkPixbufFormat" title="struct GdkPixbufFormat"><span class="type">GdkPixbufFormat</span></a> *format</code></em>);</pre>
<p>
Frees the resources allocated when copying a <a class="link" href="gdk-pixbuf-Module-Interface.html#GdkPixbufFormat" title="struct GdkPixbufFormat"><span class="type">GdkPixbufFormat</span></a>
using <a class="link" href="gdk-pixbuf-Module-Interface.html#gdk-pixbuf-format-copy" title="gdk_pixbuf_format_copy ()"><code class="function">gdk_pixbuf_format_copy()</code></a>
</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody><tr>
<td><p><span class="term"><em class="parameter"><code>format</code></em> :</span></p></td>
<td>a <a class="link" href="gdk-pixbuf-Module-Interface.html#GdkPixbufFormat" title="struct GdkPixbufFormat"><span class="type">GdkPixbufFormat</span></a>
</td>
</tr></tbody>
</table></div>
<p class="since">Since 2.22</p>
</div>
<hr>
<div class="refsect2">
<a name="gdk-pixbuf-format-get-name"></a><h3>gdk_pixbuf_format_get_name ()</h3>
<pre class="programlisting"><span class="returnvalue">gchar</span> *             gdk_pixbuf_format_get_name          (<em class="parameter"><code><a class="link" href="gdk-pixbuf-Module-Interface.html#GdkPixbufFormat" title="struct GdkPixbufFormat"><span class="type">GdkPixbufFormat</span></a> *format</code></em>);</pre>
<p>
Returns the name of the format.
</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
<tr>
<td><p><span class="term"><em class="parameter"><code>format</code></em> :</span></p></td>
<td>a <a class="link" href="gdk-pixbuf-Module-Interface.html#GdkPixbufFormat" title="struct GdkPixbufFormat"><span class="type">GdkPixbufFormat</span></a>
</td>
</tr>
<tr>
<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
<td>the name of the format.</td>
</tr>
</tbody>
</table></div>
<p class="since">Since 2.2</p>
</div>
<hr>
<div class="refsect2">
<a name="gdk-pixbuf-format-get-description"></a><h3>gdk_pixbuf_format_get_description ()</h3>
<pre class="programlisting"><span class="returnvalue">gchar</span> *             gdk_pixbuf_format_get_description   (<em class="parameter"><code><a class="link" href="gdk-pixbuf-Module-Interface.html#GdkPixbufFormat" title="struct GdkPixbufFormat"><span class="type">GdkPixbufFormat</span></a> *format</code></em>);</pre>
<p>
Returns a description of the format.
</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
<tr>
<td><p><span class="term"><em class="parameter"><code>format</code></em> :</span></p></td>
<td>a <a class="link" href="gdk-pixbuf-Module-Interface.html#GdkPixbufFormat" title="struct GdkPixbufFormat"><span class="type">GdkPixbufFormat</span></a>
</td>
</tr>
<tr>
<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
<td>a description of the format.</td>
</tr>
</tbody>
</table></div>
<p class="since">Since 2.2</p>
</div>
<hr>
<div class="refsect2">
<a name="gdk-pixbuf-format-get-mime-types"></a><h3>gdk_pixbuf_format_get_mime_types ()</h3>
<pre class="programlisting"><span class="returnvalue">gchar</span> **            gdk_pixbuf_format_get_mime_types    (<em class="parameter"><code><a class="link" href="gdk-pixbuf-Module-Interface.html#GdkPixbufFormat" title="struct GdkPixbufFormat"><span class="type">GdkPixbufFormat</span></a> *format</code></em>);</pre>
<p>
Returns the mime types supported by the format.
</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
<tr>
<td><p><span class="term"><em class="parameter"><code>format</code></em> :</span></p></td>
<td>a <a class="link" href="gdk-pixbuf-Module-Interface.html#GdkPixbufFormat" title="struct GdkPixbufFormat"><span class="type">GdkPixbufFormat</span></a>
</td>
</tr>
<tr>
<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
<td>a <a href="/home/mclasen/gnome/share/gtk-doc/html/liboil/liboil-liboiljunk.html#NULL--CAPS"><code class="literal">NULL</code></a>-terminated array of mime types which must be freed with
<code class="function">g_strfreev()</code> when it is no longer needed. <span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span>
</td>
</tr>
</tbody>
</table></div>
<p class="since">Since 2.2</p>
</div>
<hr>
<div class="refsect2">
<a name="gdk-pixbuf-format-get-extensions"></a><h3>gdk_pixbuf_format_get_extensions ()</h3>
<pre class="programlisting"><span class="returnvalue">gchar</span> **            gdk_pixbuf_format_get_extensions    (<em class="parameter"><code><a class="link" href="gdk-pixbuf-Module-Interface.html#GdkPixbufFormat" title="struct GdkPixbufFormat"><span class="type">GdkPixbufFormat</span></a> *format</code></em>);</pre>
<p>
Returns the filename extensions typically used for files in the 
given format.
</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
<tr>
<td><p><span class="term"><em class="parameter"><code>format</code></em> :</span></p></td>
<td>a <a class="link" href="gdk-pixbuf-Module-Interface.html#GdkPixbufFormat" title="struct GdkPixbufFormat"><span class="type">GdkPixbufFormat</span></a>
</td>
</tr>
<tr>
<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
<td>a <a href="/home/mclasen/gnome/share/gtk-doc/html/liboil/liboil-liboiljunk.html#NULL--CAPS"><code class="literal">NULL</code></a>-terminated array of filename extensions which must be
freed with <code class="function">g_strfreev()</code> when it is no longer needed. <span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span>
</td>
</tr>
</tbody>
</table></div>
<p class="since">Since 2.2</p>
</div>
<hr>
<div class="refsect2">
<a name="gdk-pixbuf-format-is-writable"></a><h3>gdk_pixbuf_format_is_writable ()</h3>
<pre class="programlisting"><span class="returnvalue">gboolean</span>            gdk_pixbuf_format_is_writable       (<em class="parameter"><code><a class="link" href="gdk-pixbuf-Module-Interface.html#GdkPixbufFormat" title="struct GdkPixbufFormat"><span class="type">GdkPixbufFormat</span></a> *format</code></em>);</pre>
<p>
Returns whether pixbufs can be saved in the given format.
</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
<tr>
<td><p><span class="term"><em class="parameter"><code>format</code></em> :</span></p></td>
<td>a <a class="link" href="gdk-pixbuf-Module-Interface.html#GdkPixbufFormat" title="struct GdkPixbufFormat"><span class="type">GdkPixbufFormat</span></a>
</td>
</tr>
<tr>
<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
<td>whether pixbufs can be saved in the given format.</td>
</tr>
</tbody>
</table></div>
<p class="since">Since 2.2</p>
</div>
<hr>
<div class="refsect2">
<a name="gdk-pixbuf-format-is-scalable"></a><h3>gdk_pixbuf_format_is_scalable ()</h3>
<pre class="programlisting"><span class="returnvalue">gboolean</span>            gdk_pixbuf_format_is_scalable       (<em class="parameter"><code><a class="link" href="gdk-pixbuf-Module-Interface.html#GdkPixbufFormat" title="struct GdkPixbufFormat"><span class="type">GdkPixbufFormat</span></a> *format</code></em>);</pre>
<p>
Returns whether this image format is scalable. If a file is in a 
scalable format, it is preferable to load it at the desired size, 
rather than loading it at the default size and scaling the 
resulting pixbuf to the desired size.
</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
<tr>
<td><p><span class="term"><em class="parameter"><code>format</code></em> :</span></p></td>
<td>a <a class="link" href="gdk-pixbuf-Module-Interface.html#GdkPixbufFormat" title="struct GdkPixbufFormat"><span class="type">GdkPixbufFormat</span></a>
</td>
</tr>
<tr>
<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
<td>whether this image format is scalable.</td>
</tr>
</tbody>
</table></div>
<p class="since">Since 2.6</p>
</div>
<hr>
<div class="refsect2">
<a name="gdk-pixbuf-format-is-disabled"></a><h3>gdk_pixbuf_format_is_disabled ()</h3>
<pre class="programlisting"><span class="returnvalue">gboolean</span>            gdk_pixbuf_format_is_disabled       (<em class="parameter"><code><a class="link" href="gdk-pixbuf-Module-Interface.html#GdkPixbufFormat" title="struct GdkPixbufFormat"><span class="type">GdkPixbufFormat</span></a> *format</code></em>);</pre>
<p>
Returns whether this image format is disabled. See
<a class="link" href="gdk-pixbuf-Module-Interface.html#gdk-pixbuf-format-set-disabled" title="gdk_pixbuf_format_set_disabled ()"><code class="function">gdk_pixbuf_format_set_disabled()</code></a>.
</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
<tr>
<td><p><span class="term"><em class="parameter"><code>format</code></em> :</span></p></td>
<td>a <a class="link" href="gdk-pixbuf-Module-Interface.html#GdkPixbufFormat" title="struct GdkPixbufFormat"><span class="type">GdkPixbufFormat</span></a>
</td>
</tr>
<tr>
<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
<td>whether this image format is disabled.</td>
</tr>
</tbody>
</table></div>
<p class="since">Since 2.6</p>
</div>
<hr>
<div class="refsect2">
<a name="gdk-pixbuf-format-set-disabled"></a><h3>gdk_pixbuf_format_set_disabled ()</h3>
<pre class="programlisting"><span class="returnvalue">void</span>                gdk_pixbuf_format_set_disabled      (<em class="parameter"><code><a class="link" href="gdk-pixbuf-Module-Interface.html#GdkPixbufFormat" title="struct GdkPixbufFormat"><span class="type">GdkPixbufFormat</span></a> *format</code></em>,
                                                         <em class="parameter"><code><span class="type">gboolean</span> disabled</code></em>);</pre>
<p>
Disables or enables an image format. If a format is disabled, 
gdk-pixbuf won't use the image loader for this format to load 
images. Applications can use this to avoid using image loaders 
with an inappropriate license, see <a class="link" href="gdk-pixbuf-Module-Interface.html#gdk-pixbuf-format-get-license" title="gdk_pixbuf_format_get_license ()"><code class="function">gdk_pixbuf_format_get_license()</code></a>.
</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
<tr>
<td><p><span class="term"><em class="parameter"><code>format</code></em> :</span></p></td>
<td>a <a class="link" href="gdk-pixbuf-Module-Interface.html#GdkPixbufFormat" title="struct GdkPixbufFormat"><span class="type">GdkPixbufFormat</span></a>
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>disabled</code></em> :</span></p></td>
<td>
<code class="literal">TRUE</code> to disable the format <em class="parameter"><code>format</code></em>
</td>
</tr>
</tbody>
</table></div>
<p class="since">Since 2.6</p>
</div>
<hr>
<div class="refsect2">
<a name="gdk-pixbuf-format-get-license"></a><h3>gdk_pixbuf_format_get_license ()</h3>
<pre class="programlisting"><span class="returnvalue">gchar</span> *             gdk_pixbuf_format_get_license       (<em class="parameter"><code><a class="link" href="gdk-pixbuf-Module-Interface.html#GdkPixbufFormat" title="struct GdkPixbufFormat"><span class="type">GdkPixbufFormat</span></a> *format</code></em>);</pre>
<p>
Returns information about the license of the image loader for the format. The
returned string should be a shorthand for a wellknown license, e.g. "LGPL",
"GPL", "QPL", "GPL/QPL", or "other" to indicate some other license.  This
string should be freed with <code class="function">g_free()</code> when it's no longer needed.
</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
<tr>
<td><p><span class="term"><em class="parameter"><code>format</code></em> :</span></p></td>
<td>a <a class="link" href="gdk-pixbuf-Module-Interface.html#GdkPixbufFormat" title="struct GdkPixbufFormat"><span class="type">GdkPixbufFormat</span></a>
</td>
</tr>
<tr>
<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
<td>a string describing the license of <em class="parameter"><code>format</code></em>.</td>
</tr>
</tbody>
</table></div>
<p class="since">Since 2.6</p>
</div>
<hr>
<div class="refsect2">
<a name="GdkPixbufFormat"></a><h3>struct GdkPixbufFormat</h3>
<pre class="programlisting">struct GdkPixbufFormat {
  gchar *name;
  GdkPixbufModulePattern *signature;
  gchar *domain;
  gchar *description;
  gchar **mime_types;
  gchar **extensions;
  guint32 flags;
  gboolean disabled;
  gchar *license;
};
</pre>
<p>
A <a class="link" href="gdk-pixbuf-Module-Interface.html#GdkPixbufFormat" title="struct GdkPixbufFormat"><span class="type">GdkPixbufFormat</span></a> contains information about the image format accepted by a
module. Only modules should access the fields directly, applications should
use the <code class="function">gdk_pixbuf_format_*</code> functions.
</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
<tr>
<td><p><span class="term"><span class="type">gchar</span> *<em class="structfield"><code><a name="GdkPixbufFormat.name"></a>name</code></em>;</span></p></td>
<td>the name of the image format.</td>
</tr>
<tr>
<td><p><span class="term"><a class="link" href="gdk-pixbuf-Module-Interface.html#GdkPixbufModulePattern" title="struct GdkPixbufModulePattern"><span class="type">GdkPixbufModulePattern</span></a> *<em class="structfield"><code><a name="GdkPixbufFormat.signature"></a>signature</code></em>;</span></p></td>
<td>the signature of the module.</td>
</tr>
<tr>
<td><p><span class="term"><span class="type">gchar</span> *<em class="structfield"><code><a name="GdkPixbufFormat.domain"></a>domain</code></em>;</span></p></td>
<td>the message domain for the <em class="parameter"><code>description</code></em>.</td>
</tr>
<tr>
<td><p><span class="term"><span class="type">gchar</span> *<em class="structfield"><code><a name="GdkPixbufFormat.description"></a>description</code></em>;</span></p></td>
<td>a description of the image format.</td>
</tr>
<tr>
<td><p><span class="term"><span class="type">gchar</span> **<em class="structfield"><code><a name="GdkPixbufFormat.mime-types"></a>mime_types</code></em>;</span></p></td>
<td>a <a href="/home/mclasen/gnome/share/gtk-doc/html/liboil/liboil-liboiljunk.html#NULL--CAPS"><code class="literal">NULL</code></a>-terminated array of MIME types for the image format.</td>
</tr>
<tr>
<td><p><span class="term"><span class="type">gchar</span> **<em class="structfield"><code><a name="GdkPixbufFormat.extensions"></a>extensions</code></em>;</span></p></td>
<td>a <a href="/home/mclasen/gnome/share/gtk-doc/html/liboil/liboil-liboiljunk.html#NULL--CAPS"><code class="literal">NULL</code></a>-terminated array of typical filename extensions for the
image format.</td>
</tr>
<tr>
<td><p><span class="term"><span class="type">guint32</span> <em class="structfield"><code><a name="GdkPixbufFormat.flags"></a>flags</code></em>;</span></p></td>
<td>a combination of <a class="link" href="gdk-pixbuf-Module-Interface.html#GdkPixbufFormatFlags" title="enum GdkPixbufFormatFlags"><span class="type">GdkPixbufFormatFlags</span></a>.</td>
</tr>
<tr>
<td><p><span class="term"><span class="type">gboolean</span> <em class="structfield"><code><a name="GdkPixbufFormat.disabled"></a>disabled</code></em>;</span></p></td>
<td>a boolean determining whether the loader is disabled.</td>
</tr>
<tr>
<td><p><span class="term"><span class="type">gchar</span> *<em class="structfield"><code><a name="GdkPixbufFormat.license"></a>license</code></em>;</span></p></td>
<td>a string containing license information, typically set to
shorthands like "GPL", "LGPL", etc.</td>
</tr>
</tbody>
</table></div>
<p class="since">Since 2.2</p>
</div>
<hr>
<div class="refsect2">
<a name="GdkPixbufFormatFlags"></a><h3>enum GdkPixbufFormatFlags</h3>
<pre class="programlisting">typedef enum /*&lt; skip &gt;*/
{
  GDK_PIXBUF_FORMAT_WRITABLE = 1 &lt;&lt; 0,
  GDK_PIXBUF_FORMAT_SCALABLE = 1 &lt;&lt; 1,
  GDK_PIXBUF_FORMAT_THREADSAFE = 1 &lt;&lt; 2
} GdkPixbufFormatFlags;
</pre>
<p>
Flags which allow a module to specify further details about the supported
operations.
</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
<tr>
<td><p><a name="GDK-PIXBUF-FORMAT-WRITABLE:CAPS"></a><span class="term"><code class="literal">GDK_PIXBUF_FORMAT_WRITABLE</code></span></p></td>
<td>the module can write out images in the format.
</td>
</tr>
<tr>
<td><p><a name="GDK-PIXBUF-FORMAT-SCALABLE:CAPS"></a><span class="term"><code class="literal">GDK_PIXBUF_FORMAT_SCALABLE</code></span></p></td>
<td>the image format is scalable
</td>
</tr>
<tr>
<td><p><a name="GDK-PIXBUF-FORMAT-THREADSAFE:CAPS"></a><span class="term"><code class="literal">GDK_PIXBUF_FORMAT_THREADSAFE</code></span></p></td>
<td>the module is threadsafe. If this flag is not
 set, &amp;gdk-pixbuf; will use a lock to prevent multiple threads from using
 this module at the same time. (Since 2.6)
</td>
</tr>
</tbody>
</table></div>
<p class="since">Since 2.2</p>
</div>
<hr>
<div class="refsect2">
<a name="GdkPixbufModulePattern"></a><h3>struct GdkPixbufModulePattern</h3>
<pre class="programlisting">struct GdkPixbufModulePattern {
	char *prefix;
	char *mask;
	int relevance;
};
</pre>
<p>
The signature of a module is a set of prefixes. Prefixes are encoded as
pairs of ordinary strings, where the second string, called the mask, if 
not <a href="/home/mclasen/gnome/share/gtk-doc/html/liboil/liboil-liboiljunk.html#NULL--CAPS"><code class="literal">NULL</code></a>, must be of the same length as the first one and may contain 
' ', '!', 'x', 'z', and 'n' to indicate bytes that must be matched, 
not matched, "don't-care"-bytes, zeros and non-zeros. 
Each prefix has an associated integer that describes the relevance of 
the prefix, with 0 meaning a mismatch and 100 a "perfect match".
</p>
<p>
Starting with &amp;gdk-pixbuf; 2.8, the first byte of the mask may be '*', 
indicating an unanchored pattern that matches not only at the beginning, 
but also in the middle. Versions prior to 2.8 will interpret the '*'
like an 'x'. 
</p>
<p>
The signature of a module is stored as an array of 
<a class="link" href="gdk-pixbuf-Module-Interface.html#GdkPixbufModulePattern" title="struct GdkPixbufModulePattern"><span class="type">GdkPixbufModulePattern</span></a>s. The array is terminated by a pattern
where the <em class="parameter"><code>prefix</code></em> is <a href="/home/mclasen/gnome/share/gtk-doc/html/liboil/liboil-liboiljunk.html#NULL--CAPS"><code class="literal">NULL</code></a>.
</p>
<p>
</p>
<div class="informalexample">
<pre class="programlisting">
GdkPixbufModulePattern *signature[] = {
  { "abcdx", " !x z", 100 },
  { "bla", NULL,  90 },
  { NULL, NULL, 0 }
};
</pre>
The example matches e.g. "auud\0" with relevance 100, and "blau" with 
relevance 90.</div>
<p>
</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
<tr>
<td><p><span class="term"><span class="type">char</span> *<em class="structfield"><code><a name="GdkPixbufModulePattern.prefix"></a>prefix</code></em>;</span></p></td>
<td>the prefix for this pattern</td>
</tr>
<tr>
<td><p><span class="term"><span class="type">char</span> *<em class="structfield"><code><a name="GdkPixbufModulePattern.mask"></a>mask</code></em>;</span></p></td>
<td>mask containing bytes which modify how the prefix is matched against
test data</td>
</tr>
<tr>
<td><p><span class="term"><span class="type">int</span> <em class="structfield"><code><a name="GdkPixbufModulePattern.relevance"></a>relevance</code></em>;</span></p></td>
<td>relevance of this pattern</td>
</tr>
</tbody>
</table></div>
<p class="since">Since 2.2</p>
</div>
<hr>
<div class="refsect2">
<a name="GdkPixbufModuleFillVtableFunc"></a><h3>GdkPixbufModuleFillVtableFunc ()</h3>
<pre class="programlisting"><span class="returnvalue">void</span>                (*GdkPixbufModuleFillVtableFunc)    (<em class="parameter"><code><a class="link" href="gdk-pixbuf-Module-Interface.html#GdkPixbufModule" title="struct GdkPixbufModule"><span class="type">GdkPixbufModule</span></a> *module</code></em>);</pre>
<p>
Defines the type of the function used to set the vtable of a 
<a class="link" href="gdk-pixbuf-Module-Interface.html#GdkPixbufModule" title="struct GdkPixbufModule"><span class="type">GdkPixbufModule</span></a> when it is loaded.
</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody><tr>
<td><p><span class="term"><em class="parameter"><code>module</code></em> :</span></p></td>
<td>a <a class="link" href="gdk-pixbuf-Module-Interface.html#GdkPixbufModule" title="struct GdkPixbufModule"><span class="type">GdkPixbufModule</span></a>.</td>
</tr></tbody>
</table></div>
<p class="since">Since 2.2</p>
</div>
<hr>
<div class="refsect2">
<a name="GdkPixbufModuleFillInfoFunc"></a><h3>GdkPixbufModuleFillInfoFunc ()</h3>
<pre class="programlisting"><span class="returnvalue">void</span>                (*GdkPixbufModuleFillInfoFunc)      (<em class="parameter"><code><a class="link" href="gdk-pixbuf-Module-Interface.html#GdkPixbufFormat" title="struct GdkPixbufFormat"><span class="type">GdkPixbufFormat</span></a> *info</code></em>);</pre>
<p>
Defines the type of the function used to fill a 
<a class="link" href="gdk-pixbuf-Module-Interface.html#GdkPixbufFormat" title="struct GdkPixbufFormat"><span class="type">GdkPixbufFormat</span></a> structure with information about a module.
</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody><tr>
<td><p><span class="term"><em class="parameter"><code>info</code></em> :</span></p></td>
<td>a <a class="link" href="gdk-pixbuf-Module-Interface.html#GdkPixbufFormat" title="struct GdkPixbufFormat"><span class="type">GdkPixbufFormat</span></a>.</td>
</tr></tbody>
</table></div>
<p class="since">Since 2.2</p>
</div>
<hr>
<div class="refsect2">
<a name="GdkPixbufModuleSizeFunc"></a><h3>GdkPixbufModuleSizeFunc ()</h3>
<pre class="programlisting"><span class="returnvalue">void</span>                (*GdkPixbufModuleSizeFunc)          (<em class="parameter"><code><span class="type">gint</span> *width</code></em>,
                                                         <em class="parameter"><code><span class="type">gint</span> *height</code></em>,
                                                         <em class="parameter"><code><span class="type">gpointer</span> user_data</code></em>);</pre>
<p>
Defines the type of the function that gets called once the size 
of the loaded image is known.
</p>
<p>
The function is expected to set <em class="parameter"><code>width</code></em> and <em class="parameter"><code>height</code></em> to the desired
size to which the image should be scaled. If a module has no efficient 
way to achieve the desired scaling during the loading of the image, it may
either ignore the size request, or only approximate it -- &amp;gdk-pixbuf; will
then perform the required scaling on the completely loaded image. 
</p>
<p>
If the function sets <em class="parameter"><code>width</code></em> or <em class="parameter"><code>height</code></em> to zero, the module should interpret
this as a hint that it will be closed soon and shouldn't allocate further 
resources. This convention is used to implement <a class="link" href="gdk-pixbuf-File-Loading.html#gdk-pixbuf-get-file-info" title="gdk_pixbuf_get_file_info ()"><code class="function">gdk_pixbuf_get_file_info()</code></a>
efficiently.
</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
<tr>
<td><p><span class="term"><em class="parameter"><code>width</code></em> :</span></p></td>
<td>pointer to a location containing the current image width</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>height</code></em> :</span></p></td>
<td>pointer to a location containing the current image height</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td>
<td>the loader.</td>
</tr>
</tbody>
</table></div>
<p class="since">Since 2.2</p>
</div>
<hr>
<div class="refsect2">
<a name="GdkPixbufModulePreparedFunc"></a><h3>GdkPixbufModulePreparedFunc ()</h3>
<pre class="programlisting"><span class="returnvalue">void</span>                (*GdkPixbufModulePreparedFunc)      (<em class="parameter"><code><a class="link" href="gdk-pixbuf-The-GdkPixbuf-Structure.html#GdkPixbuf"><span class="type">GdkPixbuf</span></a> *pixbuf</code></em>,
                                                         <em class="parameter"><code><a class="link" href="gdk-pixbuf-Animations.html#GdkPixbufAnimation"><span class="type">GdkPixbufAnimation</span></a> *anim</code></em>,
                                                         <em class="parameter"><code><span class="type">gpointer</span> user_data</code></em>);</pre>
<p>
Defines the type of the function that gets called once the initial 
setup of <em class="parameter"><code>pixbuf</code></em> is done.
</p>
<p>
<a class="link" href="GdkPixbufLoader.html" title="GdkPixbufLoader"><span class="type">GdkPixbufLoader</span></a> uses a function of this type to emit the 
"<a class="link" href="GdkPixbufLoader.html#GdkPixbufLoader-area-prepared" title='The "area-prepared" signal'>area_prepared</a>"
signal.
</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
<tr>
<td><p><span class="term"><em class="parameter"><code>pixbuf</code></em> :</span></p></td>
<td>the <a class="link" href="gdk-pixbuf-The-GdkPixbuf-Structure.html#GdkPixbuf"><span class="type">GdkPixbuf</span></a> that is currently being loaded.</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>anim</code></em> :</span></p></td>
<td>if an animation is being loaded, the <a class="link" href="gdk-pixbuf-Animations.html#GdkPixbufAnimation"><span class="type">GdkPixbufAnimation</span></a>, else <a href="/home/mclasen/gnome/share/gtk-doc/html/liboil/liboil-liboiljunk.html#NULL--CAPS"><code class="literal">NULL</code></a>.</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td>
<td>the loader.</td>
</tr>
</tbody>
</table></div>
<p class="since">Since 2.2</p>
</div>
<hr>
<div class="refsect2">
<a name="GdkPixbufModuleUpdatedFunc"></a><h3>GdkPixbufModuleUpdatedFunc ()</h3>
<pre class="programlisting"><span class="returnvalue">void</span>                (*GdkPixbufModuleUpdatedFunc)       (<em class="parameter"><code><a class="link" href="gdk-pixbuf-The-GdkPixbuf-Structure.html#GdkPixbuf"><span class="type">GdkPixbuf</span></a> *pixbuf</code></em>,
                                                         <em class="parameter"><code><span class="type">int</span> x</code></em>,
                                                         <em class="parameter"><code><span class="type">int</span> y</code></em>,
                                                         <em class="parameter"><code><span class="type">int</span> width</code></em>,
                                                         <em class="parameter"><code><span class="type">int</span> height</code></em>,
                                                         <em class="parameter"><code><span class="type">gpointer</span> user_data</code></em>);</pre>
<p>
Defines the type of the function that gets called every time a region
of <em class="parameter"><code>pixbuf</code></em> is updated.
</p>
<p>
<a class="link" href="GdkPixbufLoader.html" title="GdkPixbufLoader"><span class="type">GdkPixbufLoader</span></a> uses a function of this type to emit the 
"<a class="link" href="GdkPixbufLoader.html#GdkPixbufLoader-area-updated" title='The "area-updated" signal'>area_updated</a>"
signal.
</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
<tr>
<td><p><span class="term"><em class="parameter"><code>pixbuf</code></em> :</span></p></td>
<td>the <a class="link" href="gdk-pixbuf-The-GdkPixbuf-Structure.html#GdkPixbuf"><span class="type">GdkPixbuf</span></a> that is currently being loaded.</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>x</code></em> :</span></p></td>
<td>the X origin of the updated area.</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>y</code></em> :</span></p></td>
<td>the Y origin of the updated area.</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>width</code></em> :</span></p></td>
<td>the width of the updated area.</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>height</code></em> :</span></p></td>
<td>the height of the updated area.</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td>
<td>the loader.</td>
</tr>
</tbody>
</table></div>
<p class="since">Since 2.2</p>
</div>
<hr>
<div class="refsect2">
<a name="GdkPixbufModule"></a><h3>struct GdkPixbufModule</h3>
<pre class="programlisting">struct GdkPixbufModule {
	char *module_name;
	char *module_path;
	GModule *module;
	GdkPixbufFormat *info;
	
        GdkPixbuf *(* load) (FILE    *f,
                             GError **error);
        GdkPixbuf *(* load_xpm_data) (const char **data);

        /* Incremental loading */

        gpointer (* begin_load)     (GdkPixbufModuleSizeFunc size_func,
                                     GdkPixbufModulePreparedFunc prepare_func,
                                     GdkPixbufModuleUpdatedFunc update_func,
                                     gpointer user_data,
                                     GError **error);
        gboolean (* stop_load)      (gpointer context,
                                     GError **error);
        gboolean (* load_increment) (gpointer      context,
                                     const guchar *buf,
                                     guint         size,
                                     GError      **error);

	/* Animation loading */
	GdkPixbufAnimation *(* load_animation) (FILE    *f,
                                                GError **error);

        /* Saving */
        gboolean (* save) (FILE      *f,
                           GdkPixbuf *pixbuf,
                           gchar    **param_keys,
                           gchar    **param_values,
                           GError   **error);

        gboolean (*save_to_callback) (GdkPixbufSaveFunc save_func,
				      gpointer user_data,
				      GdkPixbuf *pixbuf,
				      gchar **option_keys,
				      gchar **option_values,
				      GError **error);
};
</pre>
<p>
A <a class="link" href="gdk-pixbuf-Module-Interface.html#GdkPixbufModule" title="struct GdkPixbufModule"><span class="type">GdkPixbufModule</span></a> contains the necessary functions to load and save 
images in a certain file format. 
</p>
<p>
A <a class="link" href="gdk-pixbuf-Module-Interface.html#GdkPixbufModule" title="struct GdkPixbufModule"><span class="type">GdkPixbufModule</span></a> can be loaded dynamically from a <span class="type">GModule</span>.
Each loadable module must contain a <a class="link" href="gdk-pixbuf-Module-Interface.html#GdkPixbufModuleFillVtableFunc" title="GdkPixbufModuleFillVtableFunc ()"><span class="type">GdkPixbufModuleFillVtableFunc</span></a> function 
named <code class="function">fill_vtable</code>, which will get called when the module
is loaded and must set the function pointers of the <a class="link" href="gdk-pixbuf-Module-Interface.html#GdkPixbufModule" title="struct GdkPixbufModule"><span class="type">GdkPixbufModule</span></a>.
</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
<tr>
<td><p><span class="term"><span class="type">char</span> *<em class="structfield"><code><a name="GdkPixbufModule.module-name"></a>module_name</code></em>;</span></p></td>
<td>the name of the module, usually the same as the
usual file extension for images of this type, eg. "xpm", "jpeg" or "png".</td>
</tr>
<tr>
<td><p><span class="term"><span class="type">char</span> *<em class="structfield"><code><a name="GdkPixbufModule.module-path"></a>module_path</code></em>;</span></p></td>
<td>the path from which the module is loaded.</td>
</tr>
<tr>
<td><p><span class="term"><span class="type">GModule</span> *<em class="structfield"><code><a name="GdkPixbufModule.module"></a>module</code></em>;</span></p></td>
<td>the loaded <span class="type">GModule</span>.</td>
</tr>
<tr>
<td><p><span class="term"><a class="link" href="gdk-pixbuf-Module-Interface.html#GdkPixbufFormat" title="struct GdkPixbufFormat"><span class="type">GdkPixbufFormat</span></a> *<em class="structfield"><code><a name="GdkPixbufModule.info"></a>info</code></em>;</span></p></td>
<td>a <a class="link" href="gdk-pixbuf-Module-Interface.html#GdkPixbufFormat" title="struct GdkPixbufFormat"><span class="type">GdkPixbufFormat</span></a> holding information about the module.</td>
</tr>
<tr>
<td><p><span class="term"><em class="structfield"><code><a name="GdkPixbufModule.load"></a>load</code></em> ()</span></p></td>
<td>loads an image from a file.</td>
</tr>
<tr>
<td><p><span class="term"><em class="structfield"><code><a name="GdkPixbufModule.load-xpm-data"></a>load_xpm_data</code></em> ()</span></p></td>
<td>loads an image from data in memory.</td>
</tr>
<tr>
<td><p><span class="term"><em class="structfield"><code><a name="GdkPixbufModule.begin-load"></a>begin_load</code></em> ()</span></p></td>
<td>begins an incremental load.</td>
</tr>
<tr>
<td><p><span class="term"><em class="structfield"><code><a name="GdkPixbufModule.stop-load"></a>stop_load</code></em> ()</span></p></td>
<td>stops an incremental load.</td>
</tr>
<tr>
<td><p><span class="term"><em class="structfield"><code><a name="GdkPixbufModule.load-increment"></a>load_increment</code></em> ()</span></p></td>
<td>continues an incremental load.</td>
</tr>
<tr>
<td><p><span class="term"><em class="structfield"><code><a name="GdkPixbufModule.load-animation"></a>load_animation</code></em> ()</span></p></td>
<td>loads an animation from a file.</td>
</tr>
<tr>
<td><p><span class="term"><em class="structfield"><code><a name="GdkPixbufModule.save"></a>save</code></em> ()</span></p></td>
<td>saves a <a class="link" href="gdk-pixbuf-The-GdkPixbuf-Structure.html#GdkPixbuf"><span class="type">GdkPixbuf</span></a> to a file.</td>
</tr>
<tr>
<td><p><span class="term"><em class="structfield"><code><a name="GdkPixbufModule.save-to-callback"></a>save_to_callback</code></em> ()</span></p></td>
<td>saves a <a class="link" href="gdk-pixbuf-The-GdkPixbuf-Structure.html#GdkPixbuf"><span class="type">GdkPixbuf</span></a> by calling the given <a class="link" href="gdk-pixbuf-File-saving.html#GdkPixbufSaveFunc" title="GdkPixbufSaveFunc ()"><span class="type">GdkPixbufSaveFunc</span></a>.</td>
</tr>
</tbody>
</table></div>
</div>
<hr>
<div class="refsect2">
<a name="GdkPixbufAnimationClass"></a><h3>struct GdkPixbufAnimationClass</h3>
<pre class="programlisting">struct GdkPixbufAnimationClass {
        GObjectClass parent_class;


        gboolean                (*is_static_image)  (GdkPixbufAnimation *anim);

        GdkPixbuf*              (*get_static_image) (GdkPixbufAnimation *anim);
        
        void                    (*get_size) (GdkPixbufAnimation *anim,
                                             int                 *width,
                                             int                 *height);
        
        GdkPixbufAnimationIter* (*get_iter) (GdkPixbufAnimation *anim,
                                             const GTimeVal     *start_time);
};
</pre>
<p>
Modules supporting animations must derive a type from 
<a class="link" href="gdk-pixbuf-Animations.html#GdkPixbufAnimation"><span class="type">GdkPixbufAnimation</span></a>, providing suitable implementations of the 
virtual functions.
</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
<tr>
<td><p><span class="term"><span class="type">GObjectClass</span> <em class="structfield"><code><a name="GdkPixbufAnimationClass.parent-class"></a>parent_class</code></em>;</span></p></td>
<td>the parent class</td>
</tr>
<tr>
<td><p><span class="term"><em class="structfield"><code><a name="GdkPixbufAnimationClass.is-static-image"></a>is_static_image</code></em> ()</span></p></td>
<td>returns whether the given animation is just a static image.</td>
</tr>
<tr>
<td><p><span class="term"><em class="structfield"><code><a name="GdkPixbufAnimationClass.get-static-image"></a>get_static_image</code></em> ()</span></p></td>
<td>returns a static image representing the given animation.</td>
</tr>
<tr>
<td><p><span class="term"><em class="structfield"><code><a name="GdkPixbufAnimationClass.get-size"></a>get_size</code></em> ()</span></p></td>
<td>fills <em class="parameter"><code>width</code></em> and <em class="parameter"><code>height</code></em> with the frame size of the animation.</td>
</tr>
<tr>
<td><p><span class="term"><em class="structfield"><code><a name="GdkPixbufAnimationClass.get-iter"></a>get_iter</code></em> ()</span></p></td>
<td>returns an iterator for the given animation.</td>
</tr>
</tbody>
</table></div>
</div>
<hr>
<div class="refsect2">
<a name="GdkPixbufAnimationIterClass"></a><h3>struct GdkPixbufAnimationIterClass</h3>
<pre class="programlisting">struct GdkPixbufAnimationIterClass {
        GObjectClass parent_class;


        int        (*get_delay_time)   (GdkPixbufAnimationIter *iter);

        GdkPixbuf* (*get_pixbuf)       (GdkPixbufAnimationIter *iter);

        gboolean   (*on_currently_loading_frame) (GdkPixbufAnimationIter *iter);

        gboolean   (*advance)          (GdkPixbufAnimationIter *iter,
                                        const GTimeVal         *current_time);
};
</pre>
<p>
Modules supporting animations must derive a type from 
<a class="link" href="gdk-pixbuf-Animations.html#GdkPixbufAnimationIter"><span class="type">GdkPixbufAnimationIter</span></a>, providing suitable implementations of the 
virtual functions.
</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
<tr>
<td><p><span class="term"><span class="type">GObjectClass</span> <em class="structfield"><code><a name="GdkPixbufAnimationIterClass.parent-class"></a>parent_class</code></em>;</span></p></td>
<td>the parent class</td>
</tr>
<tr>
<td><p><span class="term"><em class="structfield"><code><a name="GdkPixbufAnimationIterClass.get-delay-time"></a>get_delay_time</code></em> ()</span></p></td>
<td>returns the time in milliseconds that the current frame
should be shown.</td>
</tr>
<tr>
<td><p><span class="term"><em class="structfield"><code><a name="GdkPixbufAnimationIterClass.get-pixbuf"></a>get_pixbuf</code></em> ()</span></p></td>
<td>returns the current frame.</td>
</tr>
<tr>
<td><p><span class="term"><em class="structfield"><code><a name="GdkPixbufAnimationIterClass.on-currently-loading-frame"></a>on_currently_loading_frame</code></em> ()</span></p></td>
<td>returns whether the current frame of <em class="parameter"><code>iter</code></em> is
being loaded.</td>
</tr>
<tr>
<td><p><span class="term"><em class="structfield"><code><a name="GdkPixbufAnimationIterClass.advance"></a>advance</code></em> ()</span></p></td>
<td>advances the iterator to <em class="parameter"><code>current_time</code></em>, possibly changing the
current frame.</td>
</tr>
</tbody>
</table></div>
</div>
</div>
</div>
<div class="footer">
<hr>
          Generated by GTK-Doc V1.17.1</div>
</body>
</html>